package com.sh.dao;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.sh.entity.MonthBalanceRPT;
import com.sh.entity.ReceivePayRPT;
import com.sh.entity.User;


@Mapper
public interface RptDao {
	/**
	 * 查询 应收报表
	 * 运输费1 = 应收金额 + 其他金额 -回扣   客户名对应的数据
	 * 运输费2 = 金额+其他费用-回扣 	车主对应的数据
	 *
	 * 修理费1 = 客户对应的金额
	 * 修理费2 = 车主对应的金额
	 *
	 * 轮胎费1 = 客户对应的金额
	 * 轮胎费2 = 车主对应的金额
	 *
	 * 油费、修理费、轮胎费 = 金额汇总
	 * 客户为J的时候
	 * 期初 + 运输费1 + 油费+修理费2+轮胎费2-手动输入- 运输费2-修理费1-轮胎费1
	 * 客户为D的时候
	 * 期初 + 运输费2+ 修理费1+轮胎费1-运输费1-油费-修理费2-轮胎费2-手动输入
	 * @throws ParseException
	 * */
	List<ReceivePayRPT> listReceiveOrPayRPT(Map<String, Object> conMap);

	/**
	 * 查询 运输1、运输2、邮费、修理、轮胎、手动输入 中的所有出现的客户名称
	 * */
	List<String> listCustomerNameByDate(Map<String, Object> conMap);

	/**
	 * 如果 开始日期是当前月第一天，直接拿取 上月余额
	 * */
	String getPreMonthBlance(Map<String, Object> conMap);

	//查询 月度余额报表
	List<MonthBalanceRPT> listMonthlyBalacenRPT(Map<String, Object> conMap);

	//查询  月度余额  表中 最新的余额数据
	String getBalanceByCustomerName(Map<String, Object> conMap);

	//将 计算好的数据 修改到 月度余额 表
	void updateMonthlyBalance(@Param("list")List<ReceivePayRPT> rtnList,@Param("user")User user, @Param("sysTime")String sysTime);
	//结转
	void carryForward(@Param("carryYear")String carryYear, @Param("user")User user,  @Param("sysTime")String sysTime);
	//查询所有结转年份
	List selectCarryYearList();

}
